package com.springboot.staticcode.converter;

/**
 * <p>各种Bean转换标准接口</p>
 * <p>1. 如果一个业务模块,无法通过仅一个domain来描述完整的对象关系,考虑实现该接口</p>
 * <p>2. 一旦实现该接口, 请实现所有的方法, 不要嫌麻烦</p>
 * @author  yangz
 * @date    2015/8/31
 * @version latest
 */
public interface IBeanConverter<D, P, V, T> {

    /**
     * VO --> DO
     * @param vo
     * @return
     */
    public D v2d(V vo);


    /**
     * DO --> PO
     * @param domain
     * @return
     */
    public P d2p(D domain);

    /**
     * PO --> DO
     * @param po
     * @return
     */
    public D p2d(P po);

    /**
     * DO --> VO
     * @param domain
     * @return
     */
    public V d2v(D domain);

    /**
     * DO --> TO
     * @param domain
     * @return
     */
    public T d2t(D domain);

    /**
     * TO --> DO
     * @param to
     * @return
     */
    public D t2d(T to);


}
